package dominio.juego;

import java.util.Collection;
import java.util.Iterator;

import dominio.comun.IMolestable;
import dominio.comun.IMovible;
import dominio.laberinto.Laberinto;

/**
 * @author RJC
 * @version 1.0
 * @created 16-jun-2012 11:59:28
 */
public class Juego {

	private static Juego instance = null;

	private Integer puntaje;
	private IMovible pacman;
	private Collection<IMovible> fantasmas;
	private boolean finJuego;
	private int tick;
	private int intervaloParaMolestar= 5; //en Ticks

	private Juego() {
		tick=1;
	}

	public static Juego getInstance() {
		if (instance == null) {
			instance = new Juego();
		}
		return instance;
	}

	public void correr() {
		Iterator<IMovible> itMovibles = fantasmas.iterator();
		while (itMovibles.hasNext()) {
			itMovibles.next().mover();
		}
		pacman.mover();
		if(tick%intervaloParaMolestar==0){
			Iterator<IMolestable> itMolestables= Laberinto.getInstance().getMolestables().iterator();
			while (itMolestables.hasNext())
				itMolestables.next().molestar();
		}
		tick= tick+1;
	}

	public void sumarPuntaje(Integer puntaje) {
		this.puntaje += puntaje;
	}

	public void gano() {
		this.finJuego = true;
	}

	public void perdio() {
		this.finJuego = true;
	}

	public boolean isFinJuego() {
		return finJuego;
	}

	public void setFinJuego(boolean finJuego) {
		this.finJuego = finJuego;
	}

	public Integer getPuntaje() {
		return puntaje;
	}

	public void setPuntaje(Integer puntaje) {
		this.puntaje = puntaje;
	}

	public IMovible getPacman() {
		return pacman;
	}

	public void setPacman(IMovible pacman) {
		this.pacman = pacman;
	}

	public Collection<IMovible> getFantasmas() {
		return fantasmas;
	}

	public void setFantasmas(Collection<IMovible> fantasmas) {
		this.fantasmas = fantasmas;
	}

}